package com.atguigu.cloud.tool.load.page;/**
 * @Auter 李孝在
 * @Date 2024/11/16
 */

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;




/**
 * @projectName: keshe
 * @package: com.atguigu.cloud.tool.load
 * @className: PageLoad
 * @author: Eric
 * @description: TODO
 * @date: 2024/11/16 16:39
 * @version: 1.0
 */

@Data
@AllArgsConstructor
@NoArgsConstructor

//分页查询

public class PaginationResult<T>  {
    // 用户输入的数据
    private int currentPage;  // 当前页码
    private long pageSize; // 每页显示的条数

    //SQL执行后的结果
    private long totalCount; // 总条数
    private List<T> data; // 当前页数据结果集

    // 利用程序计算出来的
    private int prevPage; // 上一页
    private long nextPage; // 下一页
    private long totalPage; // 最后一页

    // 分页数据通过这个构造器封装好
    public PaginationResult(int currentPage, int pageSize, long totalCount, List<T> data) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.totalCount = totalCount;
        this.data = data;
        // 计算总页数（要先算）
        this.totalPage = totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1;
        // 利用三元运算符来计算上一页，如果已经是第一页的话，那么他就不会有上一页，让他的上一页为第一页，否则就当前页减1为上一页
        this.prevPage = currentPage - 1 >= 1 ? currentPage - 1 : 1;
        // 利用三元运算符计算下一页，如果已经是最后一页的话，那么就没有下一页了，就不让他下一页再增加，否则就当前页自增
        this.nextPage = currentPage + 1 <= totalPage ? currentPage + 1 : totalPage;
    }
}





